/**
 * 
 */
package com.dalonedrau.jogl.opengl.ui;

import java.awt.Color;
import java.awt.Insets;

import com.dalonedrau.jogl.opengl.GameFont;

/**
 * @author Donald
 */
public interface GuiTextItem extends GuiComponent {
	/**
	 * Gets the text color.
	 * @return {@link Color}
	 */
	Color getColor();
	/**
	 * Gets the reference id of the {@link GameFont} used.
	 * @return <code>int</code>
	 */
	int getFontRefId();
	/**
	 * Gets the text's horizontal alignment.
	 * @return {@link GuiTextHAlignment}
	 */
	int getHorizontalAlignment();
	/**
	 * Gets the the component's text color when it is inactive.
	 * @return {@link Color}
	 */
	Color getInactiveColor();
	/**
	 * Gets the insets.
	 * @return {@link Insets}
	 */
	@Override
	Insets getInsets();
	/**
	 * Gets the number of lines of text in the component.
	 * @return <code>int</code>
	 */
	int getNumberOfLinesOfText();
	/**
	 * Gets the text displayed.
	 * @return {@link String}
	 */
	String getText();
	/**
	 * Gets the height of the text displayed.
	 * @return float
	 */
	float getTextHeight();
	/**
	 * Gets the width of the text displayed.
	 * @return float
	 */
	float getTextWidth();
	/**
	 * Gets the text's vertical alignment.
	 * @return {@link GuiTextHAlignment}
	 */
	int getVerticalAlignment();
	/**
	 * Sets the text's horizontal and vertical alignment.
	 * @param hAlign the horizontal alignment
	 * @param vAlign the vertical alignment
	 */
	void setAlignment(int hAlign, int vAlign);
	/**
	 * Sets the text color.
	 * @param color the text color
	 */
	void setColor(Color color);
	/**
	 * Sets the text's horizontal alignment.
	 * @param hAlign the horizontal alignment
	 */
	void setHorizontalAlignment(int hAlign);
	/**
	 * Sets the the component's text color when it is inactive.
	 * @param c the {@link Color} to set
	 */
	void setInactiveColor(final Color c);
	/**
	 * Sets the text displayed.
	 * @param newText the text displayed
	 */
	void setText(float newText);
	/**
	 * Sets the text displayed.
	 * @param newText the text displayed
	 */
	void setText(int newText);
	/**
	 * Sets the text displayed.
	 * @param newText the text displayed
	 */
	void setText(String newText);
	/**
	 * Sets the text's vertical alignment.
	 * @param vAlign the vertical alignment
	 */
	void setVerticalAlignment(int vAlign);
}
